package block

import "crypto/sha256"

//1.定义区块结构
type Block struct {
	PrevBlockHash []byte //>1.前区块哈希
	Hash          []byte //>2.当前区块哈希
	Data          []byte //>3.数据 v4开始使用区块数据交易代替
}

//2.创建区块
func NewBlock(data []byte, prevBlockHash []byte) *Block {
	block := Block{
		PrevBlockHash: prevBlockHash,
		Hash:          []byte{}, //后续填充数据
		Data:          []byte(data),
	}
	// 生成区块时，立即做哈希处理，这样最干净
	block.ProcessingHash()
	return &block
}

//3.生成哈希
func (block *Block) ProcessingHash() {
	data := []byte{}
	data = append(data, block.PrevBlockHash...)
	data = append(data, block.Data...)
	// 做区块hash处理
	hash := sha256.Sum256(data)
	block.Hash = hash[:]
}